/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Logistica.Controlador;

import com.dp1.pucp.Modelo.Clases.*;
import com.dp1.pucp.Logistica.DAO.*;
import com.dp1.pucp.Logistica.Vista.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.table.TableModel;

/**
 *
 * @author ubuntu64
 */
public class GenerarPedidoCompraControlador {
    private TipoProductoDAO m;
    private GenerarPedidoCompraGUI pedidoCompraView;
    private MantTipoProductoGUI mantTipoView;
    private MantLineaPedidoCompraControlador mantLineaPedido;
    private AsignarInsumoProductoGUI asignarView;
    private LineaPedidoCompraGUI lineaPedidoView;
    private ArrayList<RecetaPfMp> lstRecetaPfMp;
    private ArrayList<String> lstTipo;

    public GenerarPedidoCompraControlador(TipoProductoDAO dao, GenerarPedidoCompraGUI v,DetalleMateriaPrimaNecesariaControlador q, ArrayList<RecetaPfMp> u){
        m = dao;
        pedidoCompraView = v;
        lstRecetaPfMp=u;
        //asignarView=q;
        llenarGrilla(lstRecetaPfMp);
        pedidoCompraView.addGenerarListener(new generarPedidoCompra() );
    }
    

      
    private void llenarGrilla( ArrayList<RecetaPfMp> receta){
        pedidoCompraView.llenaGrilla(receta);
    }  
      
      
      class generarPedidoCompra implements ActionListener
    {
         
        private MantTipoProductoControlador buc;

        @Override
        public void actionPerformed(ActionEvent e) {
            
            Pedidocompra pedidoC=new Pedidocompra();
            //agrego el pedido
            Date fecha=new Date();
            //saco el ultimo pedido compra
            Pedidocompra ultPedidoCompra=m.sacarUltPedido();
            String codigo=ultPedidoCompra.getCodigo();
        //aca saca el codigo mas grande  PED00000001
        
        if (ultPedidoCompra.getCodigo().equals("PED00000000")){
          //LineaCompraView.llenaCodigo("PED00000001");
        }
        
        else{
            String ceros="";
            //Genero Codigo Siguiente
            String ped= codigo.substring(0, 3);
            String num=codigo.substring(3, 11);
            int longC=num.length(); //aca siempre es 8

            int numero=Integer.parseInt(num);
            numero++;

            String nume=String.valueOf(numero);
            //saco longitud de ese entero en caracteres
            int longE=nume.length();

            for(int i=1;i<(longC-longE+1);i++){
                ceros=ceros+'0';
            }

            codigo= ped+""+ceros+""+numero;
            
          }
        
        pedidoC.setFechasolicitud(fecha);
        pedidoC.setCodigo(codigo);
        pedidoC.setEstado(2);
        pedidoC.setMotivo("Pedido Cliente");
        
        m.guardarPedido(pedidoC);
        
        //ahora guardo las lineas
        //pedidoCompraView
        TableModel table= pedidoCompraView.getTable();
        int fila=table.getRowCount();
            
            Moneda moneda=new Moneda();
            for(int i=0;i<fila;i++){
                moneda.setIdmoneda(1);
                
                Lineapedidocompra linea=new Lineapedidocompra();
                RecetaPfMp receta=lstRecetaPfMp.get(i);
                
                linea.setPedidocompra(ultPedidoCompra);
                linea.setMoneda(moneda);
                linea.setCantidad(receta.getCantidad());
                linea.setTipoproducto(receta.getTipoproductoByIdtipoproductoMp());
                m.guardarLineaPedido(linea);
               
            }
            
             pedidoCompraView.mostrarAviso("Se guardo exitosamente el pedido de compra");
        }
      }
}
      
   
